from datetime import datetime, timedelta

# 假设的金价数据（实际使用时从gold.py导入）
from gold import gold_prices  # 确保这里导入的是正确的金价字典
'''
4.黄金交易统计
编写程序，应用函数实现以下需求：
由用户输入开始买入日与卖出日，统计投资期间的投资总额、累计收益。
累计收益=当前持有黄金的市值-投资期间的投资总额。
说明：
开始买入日起，每交易日投资1000元购买黄金，于卖出日全部卖出，卖出日当日不投资。
若操作日非交易日，系统自动顺延到下一交易日。
投资期指从开始买入日起到卖出日。
某年每日金价参照样本gold.py。
'''
def is_trading_day(date_str):
    # 此处添加判断交易日的逻辑，例如检查是否是周末、公众假期等
    # 这里简化为检查日期是否在gold_prices中
    return date_str in gold_prices

def calculate_investment(buy_date_str, sell_date_str):
    buy_date = datetime.strptime(buy_date_str, "%Y-%m-%d")
    sell_date = datetime.strptime(sell_date_str, "%Y-%m-%d")
    current_date = buy_date
    investment_total = 0
    gold_holdings = 0

    while current_date <= sell_date:
        if is_trading_day(current_date.strftime("%Y-%m-%d")):
            gold_price = gold_prices.get(current_date.strftime("%Y-%m-%d"), 0)  # 使用get方法避免KeyError
            if current_date == buy_date:
                # 买入日：投资1000元购买黄金
                gold_holdings += 1000 / gold_price if gold_price > 0 else 0  # 避免除以零的错误
            else:
                # 非买入日：继续投资1000元购买黄金
                investment_total += 1000
                gold_holdings += 1000 / gold_price if gold_price > 0 else 0  # 避免除以零的错误
        current_date += timedelta(days=1)

    # 卖出日：计算持有黄金的市值
    sell_price = gold_prices.get(sell_date.strftime("%Y-%m-%d"), 0)  # 使用get方法避免KeyError
    current_market_value = gold_holdings * sell_price if sell_price > 0 else 0  # 避免除以零的错误

    # 计算累计收益
    cumulative_profit = current_market_value - investment_total
    return investment_total, cumulative_profit

# 用户输入买入日和卖出日
buy_date = input("请输入开始买入日（格式：YYYY-MM-DD）：")
sell_date = input("请输入卖出日（格式：YYYY-MM-DD）：")

# 计算投资总额和累计收益
investment_total, cumulative_profit = calculate_investment(buy_date, sell_date)
print(f"投资总额：{investment_total}元")
print(f"累计收益：{cumulative_profit}元")